/**
 * Created by Administrator on 2018/11/25 0025.
 */
const express = require("express");
const router = express.Router();
const utils = require('../../public/utils');
const bookUtils = require('./book-common');

/*
 * 添加分类
 * @params
 *   name  分类名字  （必须）
 *   parentId  父级id，一级分类为 *  （必须）
 * */
router.post('/addSort',(req,res) => {
    utils.tokenValid(req,res,async() => {
        const name = req.body.name;
        const parentId = req.body.parentId;
        if(!name || !parentId) {
            res.send(utils.setJsonStyle('9999', '参数错误'));
            return;
        }
        const isExistence = await bookUtils.sortIsExistence({name,parentId},0);   //是否存在改分类名
        if(isExistence === 9999) {
            res.send(utils.setJsonStyle('9999', '添加失败'));
        }else if(!isExistence) {   //不存在，则可继续添加
            const isSave = await bookUtils.addSortData({name,parentId},0);
            if(isSave === 9999) {
                res.send(utils.setJsonStyle('9999', '添加失败'));
            }else {
                res.send(utils.setJsonStyle('0', '添加成功'));
            }
        }else {
            res.send(utils.setJsonStyle('9999', '该分类名已存在'));
        }
    })
})

/*
 * 删除分类
 * @params
 *   id  主键   (必须)
 * */
router.post('/deleteSortById',(req,res) => {
    utils.tokenValid(req,res,async() => {
        const _id = req.body.id;
        if(!_id) {
            res.send(utils.setJsonStyle('9999', '参数错误'));
            return;
        }
        const docs = await bookUtils.findSortData({_id});  //删除前查看是否存在改数据
        if(!docs.length) {
            res.send(utils.setJsonStyle('9999', '删除失败'));
            return;
        }
        const isDelete = await bookUtils.deleteSortData({_id});
        if(isDelete === 9999) {
            res.send(utils.setJsonStyle('9999', '删除失败'));
        }else if(isDelete) {
            res.send(utils.setJsonStyle('0', '删除成功'));
        }
    })
})

/*
 * 更新分类
 * @params
 *   id   主键    (必须)
 *   name  分类名字   (必须)
 *   parentId  父级id，一级为 *   (必须)
 * */
router.post('/updateSort',(req,res) => {
    utils.tokenValid(req,res,async() => {
        const name = req.body.name;
        const _id = req.body.id;
        const parentId = req.body.parentId;
        if(!_id) {
            res.send(utils.setJsonStyle('9999', '参数错误'));
            return;
        }
        const isUpdate = await bookUtils.upDateSortData(_id,{name,parentId},0);
        if(isUpdate === 9999) {
            res.send(utils.setJsonStyle('9999', '更新失败'));
        }else if(isUpdate) {
            res.send(utils.setJsonStyle('0', '更新成功'));
        }
    })
})


/*
* 分页获取所有分类
*  @params:
*       name  分类名称  (非必填)
*       parentId   父类id  (非必填)
* */
router.post('/findSort',(req, res) => {
    utils.tokenValid(req,res,async() => {
        let parentId = req.body.parentId;
        let name = req.body.name || '';
        const reqObj = {
            name: {$regex: name},
            parentId,
        };
        !parentId && (delete reqObj.parentId);
        const data = await bookUtils.findSortData(reqObj);
        if(data === 9999) {
            res.send(utils.setJsonStyle('9999', '查找失败'));
            return;
        }
        const total = data.length;
        const pageNum = req.body.pageNum -- > 0 ? req.body.pageNum-- : 0;
        const pageSize = req.body.pageSize || data.length;
        res.send(utils.setJsonStyle('0', '查找成功', {total,list: data.splice(pageNum * pageSize, pageSize)}));
    })
});

/*
* 分组获取所有图书分类
* */
router.post('/findSortForArray',(req, res) => {
    utils.tokenValid(req,res,async() => {
        const docs = await bookUtils.findSortData();
        if(docs === 9999) {
            res.send(utils.setJsonStyle('9999', '查找失败'));
            return;
        }
        const list = [];
        docs.forEach(item => {
            if(item.parentId === '*') {
                let obj = {
                    value: item._id,
                    label: item.name,
                    children: [],
                }
                list.push(obj);
            }
        })
        docs.forEach(item => {
            list.forEach(item2 => {
                if(item.parentId === item2.value) {
                    let obj = {
                        value: item._id,
                        label: item.name,
                    }
                    item2.children.push(obj);
                }
            })
        })
        res.send(utils.setJsonStyle('0', '查找成功',list));
    })
});




module.exports = router;


